home *** CD-ROM | disk | FTP | other *** search
/ AGA Toolkit '97 / The AGA Toolkit '97.iso / c / fastexec.doc < prev    next >
Text File  |  1996-09-07  |  17KB  |  359 lines

  1.                                                                 26-Feb-1996
  2. Documentation for
  3.  
  4.                         ==========================
  5.                         ====  FastExec 39.16  ====
  6.                         ==========================
  7.                 Copyright © 1994-1996 PitPlane Productions
  8.  
  9.              IMPORTANT! Please read copyrights, disclaimer and
  10.                 license parts of this document before use.
  11.  
  12.  
  13.  
  14.     *** What is FastExec? ***
  15.  
  16.     o FastExec is a reset proof patch to move Execbase and supervisor stack
  17.       from chipram into 32bit fastram on Blizzard 12x0 based A1200s, or
  18.       other turbo card based systems having the same problem. FastExec
  19.       requires Kickstart 3.0 or better.
  20.  
  21.  
  22.     *** Why FastExec? ***
  23.  
  24.     o With Blizzard turbos (at least 1230-III) fast memory is added to
  25.       system memory pool after execbase is initialized. This leads to the
  26.       fact that execbase and system supervisor stack are stuffed into chip
  27.       memory! As you may have heard, chipram is slow compared against
  28.       fastram, in fact fastram can be more than ten times faster! It's a
  29.       pity that so vital parts of system get into chip memory, as there
  30.       usually is loads of lighting speed fastram available. FastExec is
  31.       program to fix this problem.
  32.  
  33.     o There is another program called FastExec (author Torbjörn Andersson)
  34.       but it isn't as good as mine. It's over 4K long. It uses HACKS. It
  35.       doesn't survive resets. It's ShareWare. First version of my FastExec
  36.       was (internally) released at the end of year 1994, so it's an
  37.       independent product.
  38.  
  39.     o Taken from the document of Andersson's FastExec:
  40.  
  41.      "FastExec  is  not programmed in a recommended way, because I
  42.       don't know any clean way to solve the problem.  FastExec may
  43.       not work on your system."
  44.  
  45.       As a side effect Andersson's FastExec disturbs AutoConfig system.
  46.       Just try to examine expansion boards in your system after using it.
  47.       My machine claimed that there weren't any present!? I think there
  48.       isn't any good reason to move expansion.library because it causes
  49.       these severe troubles.
  50.  
  51.       Well, I know the clean way to move execbase and I implemented it.
  52.  
  53.  
  54.     o This tool is FREEWARE!! (see license)
  55.     o FastExec is 100% assembler!
  56.     o FastExec executable is less than 1024 bytes short!
  57.     o Uses only 424 bytes of memory! (Yes, that's true!!)
  58.     o Doesn't conflict with bootmenu! (Andersson's FastExec does!)
  59.     o Can be used to fix similar troubles with other turbos too!
  60.     o I dunno about the speedup, as there aren't many multitasking
  61.       benchmark programs around. Should be worth of it, though.
  62.     o FastExec should be compatible with all future kickstarts.
  63.     o Enforcer hit free (tested)
  64.  
  65.  
  66.     *** Notes ***
  67.  
  68.     o ATTENTION kickstart release 2 users!!
  69.       Would you like to see FastExec running on your system? If you would,
  70.       contact me (author) and ask. This could be _very_ easily implemented,
  71.       but I really didn't see any reason to support this anchient kickstart
  72.       release... ;-) The fact is that most of the powerful systems (that
  73.       need FastExec) run with kickstart 3.0 or better. (Except maybe some
  74.       upgraded A3000s?) Anyway, if you need FastExec for KS 2.x contact me.
  75.  
  76.     o FastExec has been tested on following system:
  77.  
  78.       A1200 10/540 MB, Blizzard 1230-III 68030 @ 50MHz
  79.       A1200T 10/820 MB, Blizzard 1260 68060 @ 50MHz
  80.  
  81.       FastExec works (should work!) with all other turbo cards having
  82.       similar troubles. FastExec doesn't rely on Blizzard products, but
  83.       others aren't tested. If you're having troubles with FastExec on
  84.       your system and you're sure that trouble is hardware (or maybe even
  85.       software) related, contact me. I'll (try to) fix it. I cannot
  86.       guarantine FastExec to be 100% software/hardware compatible!
  87.  
  88.     o Note that FastExec can *not* move execbase to fast memory which is
  89.       added with AddMem or similar tool in startup-sequence. Credit Card
  90.       (PCMCIA) memory cannot be used, but it's even slower than chipram
  91.       anyway!
  92.  
  93.     o Some of virus killers and checkers may report that system's kickmem
  94.       and kicktag pointers are in use. That really is the case, but you
  95.       should calmly ignore these warnings. (Most virus killers/checkers
  96.       will show the name of the kicktag, in this case it is 'Fast_Exec'.)
  97.  
  98.     o FastExec doesn't use Cold- or CoolCapture. This means it'll work fine
  99.       with, for example, ShapeShifter's PrepareEmul tool, in any
  100.       circumstances.
  101.  
  102.     o FastExec should be compatible with all future Kickstarts. Kickstart
  103.       3.0 is currently the only tested one. If FastExec refuses to
  104.       co-operate with KS 3.1 or maybe with 4.0 beta(?) then contact me.
  105.  
  106.     o To contact the author (for any reason?) try this:
  107.  
  108.       Harry Sintonen (Delta)          (Gifts, cli-scripts, ASM Sources
  109.       Kotipolku 30                     etc. are welcome. No illegal trade.)
  110.       48710  Karhula
  111.       FINLAND
  112.  
  113.  
  114.     *** Technique ***
  115.  
  116.     o If you're not interested how this program works you should skip this
  117.       part of the document. Maybe you should skip it anyway, because first
  118.       of all, this part is quite technical and secondly: I'm not very good
  119.       in explaining complicated things in english as this. (Forgive me!!
  120.       English isn't my native language after all. ;-)
  121.  
  122.     o The very early rom startup hasn't changed much since Kickstart
  123.       release 1.2. All the internals, including hardware initialization,
  124.       execbase and internal variable building are almost identical in all
  125.       kickstart versions. Of course, in newer kickstarts things are done
  126.       much better than in earlier versions, and some structures has been
  127.       expanded, but the main idea is the same.
  128.  
  129.       When the system has been initialized, temporary execbase has been
  130.       created. Then the system will search ROM memory for resident modules
  131.       and create ResModules list. If any KickTags are defined they'll
  132.       be inserted (or they'll replace existing modules) to ResModules list.
  133.       After this, all the resident modules will be initialized. This really
  134.       gets things running. The ResModules list will be initialized in
  135.       priority order, that is, expansion.library will be run (read:
  136.       initialized) first.
  137.  
  138.       Expansion.library initialises all the expansions in system and for
  139.       example, memory of SupraRAM 500RX expansion for Amiga 500 will be
  140.       added to system's MemList. Apparently the memory of Blizzard 12x0
  141.       Turbo Board is NOT added in this phase. All memory above 16 megabyte
  142.       area (8MB autoconfig memory area) will be initialized afterwards. The
  143.       task is done by resident called 'diag init'. Its priority is 105
  144.       while exec.library's is 104.
  145.  
  146.       Exec.library will be the next resident module to initialize. It tries
  147.       to allocate fast memory for execbase, but if it doesn't succeed it
  148.       will use the temporary execbase, which is always in chipram
  149.       (actually, it can be in pseudo fast memory). If it does get the
  150.       memory then the temporary execbase is cloned to new one and the
  151.       memory taken by temporary execbase is free'ed. As the memory of
  152.       Blizzard Turbo Board isn't available, the execbase and supervisor
  153.       stackpointer will be in chipram (The memory is added to system
  154.       afterwards in 'diag init' resident).
  155.  
  156.       The trick is, that we'll allocate known fastram when the system is
  157.       running with that memory. Then we'll relocate execbase and supervisor
  158.       stack to this newly allocated memory array. The hard part is that
  159.       execbase can NOT be cloned when it is available in multitasking
  160.       enviroiment. Programs might have got execbase pointer from address 4
  161.       and use it happily, when we would free the memory used by that
  162.       execbase and use the new, totally different memory array as new
  163.       execbase. This would cause a total crash. The solution is to clone
  164.       execbase early enough, BUT after fastram is added to system memory
  165.       pool, which means use of kicktag pointer at priority 104. (Just after
  166.       'diag init' resident!)
  167.  
  168.       Now our kicktag code is called after the fastram is available so we
  169.       can simply AllocMem() the execbase and stack area, clone execbase,
  170.       create new supervisor stack, set new execbase pointer to address 4,
  171.       set new supervisor stack pointer, free old execbase and stack memory,
  172.       and viola!, things are running fine.
  173.  
  174.       The memory of kicktag code (code handling all the above) is
  175.       allocated with KickMemPtr service of execbase. As this memory is
  176.       allocated by execbase initialization, it must exists in MemList at
  177.       that time (this code is in chipram with A1200). Now, all the memory
  178.       has been allocated and the system is running from fastram.
  179.  
  180.       This technique will work with future kickstarts. The reason is that
  181.       most of the execbase's structures aren't initialized at the moment
  182.       the cloning is done. Actually the only potential problem is that
  183.       system will crash if some program gets execbase pointer before
  184.       FastExec and uses it afterwards.
  185.  
  186.  
  187.       Now, that was a cutted version of _The Technique_!! [grin]
  188.  
  189.  
  190.     *** FastExec's Usage  ***
  191.  
  192.     o FastExec's template is
  193.  
  194.       FORCE24BIT/S, RESET=REBOOT/S
  195.  
  196.       FORCE24BIT/S              With this switch you can force FastExec to
  197.                                 accept also fast memory below 24-bit
  198.                                 address range. Normally only fast memory
  199.                                 above 16MB (24-bit) is accepted. Usually
  200.                                 this switch isn't needed, I added it just
  201.                                 for compability reasons.
  202.  
  203.       RESET=REBOOT/S            If this switch is specified FastExec will
  204.                                 reboot the machine immeditially after
  205.                                 FastExec is installed to memory. BEWARE!!
  206.                                 You will lose all the information in ram!
  207.                                 Of course, no reboot is done if execbase is
  208.                                 already in fastram.
  209.  
  210.  
  211.     o RC (return code) is set:
  212.       OK (0)                    FastExec installed ok.
  213.       WARN (5)                  FastExec isn't needed. Exec is already in
  214.                                 fastram. This is also the result if
  215.                                 FastExec has already moved exec. Of course
  216.                                 RESET=REBOOT/S has no effect if execbase is
  217.                                 already moved!
  218.       ERROR (10)                Things went wrong. Couldn't get memory?
  219.                                 This is the error you get if you do not
  220.                                 have 'real' fastram at all (see FORCE24BIT
  221.                                 switch).
  222.       FAIL  (20)                Something fatal happened! Dos didn't open?
  223.  
  224.  
  225.     o If you aren't aware of the fact whether you really need FastExec or
  226.       not (YES, you don't necessarily need this program! :) and you want to
  227.       install FastExec easily you should follow these instructions:
  228.  
  229.       Write in CLI or Shell:
  230.  
  231.       1.> FastExec
  232.       1.> Set
  233.       process           1
  234.       RC                5
  235.       Result2           0
  236.       1.> 
  237.  
  238.       If you got result as above (RC=5) you do not need FastExec as
  239.       execbase is already in fastram. If you got RC=10 then you do not have
  240.       enough memory (or you don't have 'real' 32-bit fastram [See
  241.       FORCE24BIT switch]).
  242.  
  243.       process           1
  244.       RC                0
  245.       Result2           0
  246.  
  247.       If you got Set's output as above (RC=0), you NEED FastExec. It will
  248.       now activate after next reboot, but if you want to make FastExec's
  249.       effect permanent, you need to copy FastExec executable into your C:
  250.       drawer (if not yet done) and insert the following line to the
  251.       beginning of your S:StartUp-Sequence file:
  252.  
  253.       C:FastExec REBOOT
  254.  
  255.       Now, after every coldreboot (total crash, powering up) your machine
  256.       will boot twice, but that isn't too disturbing, I think!
  257.  
  258.       You can leave REBOOT switch out, the only difference is that execbase
  259.       will not be moved into fastram first time the system is powered up
  260.       (or rebooted after fatal crash), as the system will not be rebooted
  261.       by FastExec. This makes more sense if you have several similary
  262.       acting reset proof patches in your startup. Because of this feature
  263.       you can install, for example, following lines to your
  264.       startup-sequence:
  265.  
  266.       C:FastExec                ; FastExec will not reboot machine,
  267.       C:PrepareEmul             ; but PrepareEmul will!
  268.  
  269.       Now, your machine will be extra rebooted only once, instead of two
  270.       reboots. (I really hate triple reboots!! ;^)
  271.  
  272.  
  273.                                 Simple, ha?
  274.  
  275.                    And remember... Enjoy the FAST Exec!
  276.  
  277.  
  278.  
  279.     *** COPYRIGHTS ***
  280.  
  281.       All Amiga technology is Copyright © Amiga Technologies GmbH.
  282.  
  283.       Blizzard Turbo Boards are © 1994 phase 5 digital products. All rights
  284.       reserved.
  285.  
  286.       ShapeShifter is © 1993-1995 Christian Bauer. PrepareEmul is a part of
  287.       the ShapeShifter package.
  288.  
  289.       SupraRAM is © 1991 Supra Corporation. SupraRAM 500RX is a trademark
  290.       of Supra Corporation.
  291.  
  292.       FastExec is Copyright © 1994-1996 PitPlane Productions.
  293.  
  294.  
  295.     *** LICENSE ***
  296.  
  297. 1.   This license applies to the product called "FastExec", a program for
  298.      the Amiga computer, published by PitPlane Productions under the
  299.      concepts of FreeWare, and the accompanying documentation. The terms
  300.      "Program" and "FastExec" below, refer to this product. The licensee is
  301.      addressed as "you".
  302.  
  303. 2.   You may copy and distribute verbatim copies of the program's
  304.      executable code and documentation as you receive it, in any medium,
  305.      provided that you conspicuously and appropriately publish only the
  306.      original, unmodified program, with all copyright notices and
  307.      disclaimers of warranty intact and including all the accompanying
  308.      documentation, example files and anything else that came with the
  309.      original.
  310.  
  311. 3.   You may not copy and/or distribute this program without the
  312.      accompanying documentation and other additional files that came with
  313.      the original. You may not copy and/or distribute modified versions of
  314.      this program.
  315.  
  316. 4.   You may not copy, modify, sublicense, distribute or transfer the
  317.      program except as expressly provided under this license. Any attempt
  318.      otherwise to copy, modify, sublicense, distribute or transfer the
  319.      program is void, and will automatically terminate your rights to use
  320.      the program under this license. However, parties who have received
  321.      copies, or rights to use copies, from you under this license will not
  322.      have their licenses terminated so long as such parties remain in full
  323.      compliance.
  324.  
  325. 5.   By copying, distributing and/or using the program you indicate your
  326.      acceptance of this license to do so, and all its terms and conditions.
  327.  
  328. 6.   Each time you redistribute the program, the recipient automatically
  329.      receives a license from the original licensor to copy, distribute
  330.      and/or use the program subject to these terms and conditions. You may
  331.      not impose any further restrictions on the recipients' exercise of the
  332.      rights granted herein.
  333.  
  334. 7.   You may not disassemble, decompile, re-source or otherwise reverse
  335.      engineer the program.
  336.  
  337. 8.   If you wish to incorporate parts of the program into other programs,
  338.      write to the author to ask for permission.
  339.  
  340. 9.   You agree to cease distributing the program and data involved if
  341.      requested to do so by the author.
  342.  
  343. 10.  You may charge a fee to recover distribution costs. The fee for
  344.      diskette distribution may not be more than the cost to obtain a public
  345.      domain diskette from Fred Fish.
  346.  
  347.  
  348.     *** DISCLAIMER ***
  349.  
  350.      NO GUARANTEE IS GIVEN NOR IMPLIED THAT THIS PROGRAM IS FIT FOR ANY
  351.      USE. THIS PROGRAM AND THE INFORMATION WITHIN THIS TEXT IS PROVIDED ON
  352.      "AS IS" BASIS. THE ENTIRE RISK AS TO ITS QUALITY AND PERFORMANCE IS
  353.      WITH THE USER. SHOULD THE PROGRAM PROVE DEFECTIVE, THE USER (AND NOT
  354.      THE AUTHOR) ASSUMES THE ENTIRE COST OF ALL NECCESSARY DAMAGES. IN NO
  355.      EVENT WILL THE AUTHOR BE LIABLE FOR DIRECT, INDIRECT, INCIDENTAL OR
  356.      CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT IN THE PROGRAM. THE
  357.      AUTHOR RESERVES THE RIGHT TO MAKE CHANGES TO THE SOFTWARE OR
  358.      DOCUMENTATION WITHOUT NOTICE.
  359.